// 这里就是对动态路由和固定路由进行处理的地方
// 将抛出的进行导入处理
import {
	fixedRouter
} from '@/router'
import {
	asyncRouterMap
} from '@/utils/dynamic.js'
// 想使用routerbeforeach 那么就得将路由导入进来
import router from '../router'


var addRouFlag = false


router.beforeEach((to, from, next) => {
	// 通过token值判断是否登录，并且将其权限进行比对
	if (to.path == '/login') {
		next()
	} else {
		if (sessionStorage.getItem("X-Litemall-Admin-Token") == null || sessionStorage.getItem(
				"X-Litemall-Admin-Token") == '') {
			next({
				path: '/login'
			}) // 则跳转到登录页
		} else {
			if (sessionStorage.getItem('perms') != null) {
				next()
				// 将数据进行处理
				var perms = sessionStorage.getItem('perms')
					
				let  test= perms.split(',')
				// let test2= Array.from(test)
				// console.log("这才是数据啊", perms)
				// console.log("这才是数据啊", test)
				// console.log("这才是数据啊", test2)
				// console.log(typeof (test))//对象
				if (perms.indexOf('*') != -1) {
					// 如果有星号那么我们就是所有的权力
					// var getRoutes=fixedRouter.concat(getRoutes)
						next()
				} else {
					// 对单独进行处理
					var getRoutes = baseRoleGetRouters(asyncRouterMap, perms.split(","))
					// global.antRouter = fixedRouter.concat(getRoutes)
					global.antRouter=getRoutes
					// console.log("全局数组",global.antRouter)
					
					// router.addRoutes(fixedRouter.concat(getRoutes))
					// router.match = createRouter(constantRoutes).match;
					router.addRoutes(getRoutes)
					next()
					// router.selfaddRoutes(getRoutes)
				}



			} else {

				next('/login')
			}


			// next()
		}

	}






	// 将获取到的口令进行存储，判断是否成功登录
	// let tokens = sessionStorage.getItem('X-Litemall-Admin-Token')
	// // console.log("我是token值",tokens)
	// // next()

	// if (tokens != null || tokens != '') {
	// 	next()
	// 	if (!addRouFlag) {

	// 		console.log("我是token值", tokens)

	// 		addRouFlag = true

	// 		let perms = JSON.parse(sessionStorage.getItem('perms'))
	// 		// 2.根据用户的角色、和需要动态展示的路由，生成符合用户角色的路由
	// 		console.log(perms, "数据")
	// 		// 超级管理员单独判断
	// 		if (perms.indexOf('*')!=-1) {
	// 			// 如果有星号那么我们就是所有的权力
	// 			// var getRoutes=fixedRouter.concat(getRoutes)

	// 		} else{
	// 			// 对单独进行处理
	// 			var getRoutes = baseRoleGetRouters(asyncRouterMap, GetRole.split(","))

	// 		}

	// 		// var getRoutes = baseRoleGetRouters(asyncRouterMap, GetRole.split(","))
	// 		// 3.利用global属性，让渲染菜单的组件sideMeuns.vue重新生成左侧菜单
	// 		// global.antRouter = fixedRouter.concat(getRoutes)
	// 		// 4.将生成好的路由addRoutes
	// 		// router.addRoutes(fixedRouter.concat(getRoutes))
	// 		// 5.push之后，会重新进入到beforeEach的钩子里,直接进入第一个if判断
	// 		router.push({
	// 			path: to.path
	// 		})
	// 	}

	// } else {
	// 	// 用户没登录，跳转到登录页面
	// 	if (to.path === '/login') {
	// 		// console.log("我是token值",tokens)
	// 		next()
	// 	} else {
	// 		// console.log("我是token值",tokens)
	// 		next('/login')
	// 	}

	// }

})

function hasPermission(route, roles) {
	if (route.meta && route.meta.roles) {
		return roles.some(role => route.meta.roles.indexOf(role) >= 0)
	} else {
		return true
	}
}

// 根据用户的角色取到该用户对应的路由
function baseRoleGetRouters(allRoutes, roles) {
	// allRoutes是动态路由表
	// roles是取到的用户角色，数组
	let rightRoutes = allRoutes.filter((route, index) => {
		if (hasPermission(route, roles)) {
			if (route.children && route.children.length) {
				route.children = baseRoleGetRouters(route.children, roles)
			}
			return true
		}
		return false
	})
	return rightRoutes
}
